import axios from 'axios';
import router from '@/router/index.js'
import { ElMessage } from 'element-plus'

// 创建一个 axios 实例
const http = axios.create({
    baseURL: '/api',
    timeout: 10000, // 超时时间10s
});

// 请求拦截器
http.interceptors.request.use(
    config => {
        // 添加token
        const token = localStorage.getItem('token');
        if (token) {
            config.headers['token'] = `${token}`;
        }
        return config;
    },
    error => {
        // 处理请求错误
        return Promise.reject(error);
    }
);

// 响应拦截器
http.interceptors.response.use(
    response => {
        // 处理成功响应
        if(response.data.code != 200){
            if(response.data.code == 500){
                ElMessage.error("服务器内部错误："+response.data.message)
            }else if(response.data.code == 401){
                ElMessage.error("权限不足！")
            }else if(response.data.code == 2000){
                // 跳转到登录界面
                localStorage.clear();
                router.push("/login");
                ElMessage.error("token非法！")
            }else if(response.data.code == 2001){
                // 跳转到登录界面
                localStorage.clear();
                router.push("/login");
                ElMessage.error("用户未登录！")
            }else if(response.data.code == 2002){
                // 跳转到登录界面
                localStorage.clear();
                router.push("/login");
                ElMessage.error("用户长时间未操作！请重新登录！")
            }else{
                ElMessage.error("未知错误！")
            }
        }
        return response.data;
    },
    error => {
        return Promise.reject(error);
    }
);

export default http